package models4admin

import (
	"Gin-Gorm-boke/boke_common/models"
	"github.com/guregu/null"
	"gorm.io/gorm"
)

type Article struct {
	gorm.Model
	Id         int    `gorm:"column:id;" json:"id"`
	Title      string `gorm:"column:title;" json:"title"`
	Content    string `gorm:"column:content;" json:"content"`
	Summary    string `gorm:"column:summary;" json:"summary"`
	CategoryId int    `gorm:"column:category_id;" json:"category_id"`
	Thumbnail  string `gorm:"column:thumbnail;" json:"thumbnail"`
	IsTop      string `gorm:"column:is_top;default:'0';" json:"is_top"`
	Status     string `gorm:"column:status;default:'1';" json:"status"`
	ViewCount  int    `gorm:"column:view_count;default:0;" json:"view_count"`
	IsComment  string `gorm:"column:is_comment;default:'1';" json:"is_comment"`
}
type ArticleVo struct {
	gorm.Model
	Id         int           `gorm:"column:id;" json:"id"`
	Title      string        `gorm:"column:title;" json:"title"`
	Content    string        `gorm:"column:content;" json:"content"`
	Summary    string        `gorm:"column:summary;" json:"summary"`
	CategoryId int           `gorm:"column:category_id;" json:"categoryId"`
	CreateTime models.MyTime `gorm:"column:created_at;" json:"createTime"`
	Thumbnail  string        `gorm:"column:thumbnail;" json:"thumbnail"`
	IsTop      string        `gorm:"column:is_top;default:'0';" json:"isTop"`
	Status     string        `gorm:"column:status;default:'1';" json:"status"`
	ViewCount  int           `gorm:"column:view_count;default:0;" json:"viewCount"`
	IsComment  string        `gorm:"column:is_comment;default:'1';" json:"isComment"`
	UpdateTime models.MyTime `gorm:"column:updated_at;" json:"updateTime"`
	CreateBy   string        `gorm:"column:create_by;" json:"createBy"`
	UpdateBy   string        `gorm:"column:update_by;" json:"updateBy"`
	DelFlag    int           `gorm:"column:del_flag;default:0;" json:"delFlag"`
}
type ArticleDto struct {
	gorm.Model
	Id         int           `gorm:"column:id;" json:"id"`
	Title      string        `gorm:"column:title;" json:"title"`
	Content    string        `gorm:"column:content;" json:"content"`
	Summary    string        `gorm:"column:summary;" json:"summary"`
	CategoryId null.Int      `gorm:"column:category_id;" json:"categoryId"`
	CreateTime models.MyTime `gorm:"column:created_at;" json:"createTime"`
	Thumbnail  string        `gorm:"column:thumbnail;" json:"thumbnail"`
	IsTop      string        `gorm:"column:is_top;default:'0';" json:"isTop"`
	Status     string        `gorm:"column:status;default:'1';" json:"status"`
	ViewCount  null.Int      `gorm:"column:view_count;default:0;" json:"viewCount"`
	IsComment  string        `gorm:"column:is_comment;default:'1';" json:"isComment"`
	UpdateTime models.MyTime `gorm:"column:updated_at;" json:"updateTime"`
	CreateBy   string        `gorm:"column:create_by;" json:"createBy"`
	UpdateBy   string        `gorm:"column:update_by;" json:"updateBy"`
	DelFlag    null.Int      `gorm:"column:del_flag;default:0;" json:"delFlag"`
}
type ArticleWithDetail struct {
	gorm.Model
	Id         int           `gorm:"column:id;" json:"id"`
	Title      string        `gorm:"column:title;" json:"title"`
	Content    string        `gorm:"column:content;" json:"content"`
	Summary    string        `gorm:"column:summary;" json:"summary"`
	CategoryId null.Int      `gorm:"column:category_id;" json:"categoryId"`
	CreateTime models.MyTime `gorm:"column:created_at;" json:"createTime"`
	Thumbnail  string        `gorm:"column:thumbnail;" json:"thumbnail"`
	IsTop      string        `gorm:"column:is_top;default:'0';" json:"isTop"`
	Status     string        `gorm:"column:status;default:'1';" json:"status"`
	ViewCount  null.Int      `gorm:"column:view_count;default:0;" json:"viewCount"`
	IsComment  string        `gorm:"column:is_comment;default:'1';" json:"isComment"`
	UpdateTime models.MyTime `gorm:"column:updated_at;" json:"updateTime"`
	CreateBy   string        `gorm:"column:create_by;" json:"createBy"`
	UpdateBy   string        `gorm:"column:update_by;" json:"updateBy"`
	DelFlag    null.Int      `gorm:"column:del_flag;default:0;" json:"delFlag"`
	Tags       []int         `json:"tags"`
}

func (Article) TableName() string {
	return "sg_article"
}
func (ArticleVo) TableName() string { return "sg_article" }

func (ArticleDto) TableName() string { return "sg_article" }
